<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link type="text/css" rel="stylesheet" href="styles.css">
  <script type="text/javascript" src="config.js"></script>
</head>

<body>
  <h1 class="h">6. 清洗与整理</h1>
  <p>这是数据分析最耗时但也最重要的部分。</p>
  <dl>
    <dt>1. 处理缺失值 NaN</dt>
    <dd>
      <pre><code>df.isnull()        # 检查每个单元格是否为空，返回True/False的表格
df.isnull().sum()  # 统计每一列有多少个空值

# 处理方式
df.dropna()        # 直接删除包含空值的行
df.fillna(0)       # 用0填充所有空值
df['某列'].fillna(df['某列'].mean(), inplace=True) # 用该列平均值填充，inplace=True表示直接修改原df</code></pre>
    </dd>
    <dt>2. 处理重复值</dt>
    <dd>
      <pre><code>df.duplicated()    # 检查哪些行是重复的
df.drop_duplicates() # 删除重复的行</code></pre>
    </dd>
    <dt>3. 修改数据</dt>
    <dd>
      <pre><code># 修改列名
df.rename(columns={'语文': 'chinese', '数学': 'math'}, inplace=True)

# 修改索引
df.index = ['a', 'b', 'c', 'd']

# 重置索引（把原来的索引变成普通的一列，新的索引变成默认的数字）
df.reset_index(inplace=True)

# 设置新的索引
df.set_index('姓名', inplace=True) # 把“姓名”列设为索引

# 改变数据类型
df['语文'] = df['语文'].astype(float) # 将语文列转为浮点数</code></pre>
    </dd>
  </dl>
</body>

</html>